home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
progtool
/
modula2
/
module
/
winicon.mod
< prev
next >
Wrap
Text File
|
1995-11-25
|
3KB
|
89 lines
IMPLEMENTATION MODULE WinIcon;
FROM SYSTEM IMPORT ADDRESS,VAL;
FROM AES IMPORT WindowCalc,FormCenter,ObjectDraw,WindowGet;
FROM GEMAESBase IMPORT WorkXYWH,CurrXYWH,WCBorder;
FROM EasyDialog IMPORT GetObjectXYWH,SetObjectXYWH;
FROM EasyWindow IMPORT WindowElements,windowlist,createWindow,openWindow,
rectangle,windowtype,setWindow,RedrawProcType;
PROCEDURE InstallIcon( Window : INTEGER; r : rectangle);
VAR x,y,w,h : INTEGER;
win : windowtype;
BEGIN
IF (windowlist[Window]#NIL) THEN
win:=windowlist[Window]^;
IF win.opened THEN
GetObjectXYWH(0,win.reference,VAL(CARDINAL,x),VAL(CARDINAL,y),VAL(CARDINAL,w),VAL(CARDINAL,h));
SetObjectXYWH(0,win.reference,win.work.x+1,win.work.y+1,w,h);
ObjectDraw(win.reference,0,8,r.x,r.y,r.w,r.h);
END(*IF*);
END(*IF*);
END InstallIcon;
PROCEDURE CreateIconWindow(TreePtr: ADDRESS; Title : ARRAY OF CHAR; x,y,w,h:INTEGER;
RedrawProc :RedrawProcType;
Elements : WindowElements):INTEGER;
VAR Icx,Icy,Icw,Ich :INTEGER;
xb,yb,hb,wb:INTEGER;
dx,dy,dw,dh:INTEGER;
Window :INTEGER;
win : windowtype;
BEGIN
FormCenter(TreePtr,Icx,Icy,Icw,Ich);
WindowGet(0,WorkXYWH,dx,dy,dw,dh);
createWindow(Window,x,y,w,h,Elements,Title,TRUE,RedrawProc);
IF dx>x THEN
x:=dx;
END(*IF*);
IF dy>y THEN
y:=dy;
END(*IF*);
IF (Icw>w) THEN
w:=Icw;
END(*IF*);
IF Ich>h THEN
h:=Ich;
END(*IF*);
IF (windowlist[Window]#NIL) THEN
win:=windowlist[Window]^;
WindowCalc(WCBorder,VAL(INTEGER,Elements),x,y,w,h,xb,yb,wb,hb);
win.min.x:=xb;
win.min.y:=yb;
win.min.w:=wb;
win.min.h:=hb;
win.snap:=TRUE;
win.reference:=TreePtr;
windowlist[Window]^:=win;
END(*IF*);
RETURN Window
END CreateIconWindow;
PROCEDURE OpenIconWindow(Window,x,y,w,h:INTEGER);
VAR r :rectangle;
win : windowtype;
dx,dy,dw,dh:INTEGER;
BEGIN
WindowGet(0,WorkXYWH,dx,dy,dw,dh);
IF dx>x THEN
x:=dx;
END(*IF*);
IF dy>y THEN
y:=dy;
END(*IF*);
IF (windowlist[Window]#NIL) THEN
win:=windowlist[Window]^;
IF w<win.min.w THEN w:=win.min.w END(*IF*);
IF w<win.min.h THEN w:=win.min.h END(*IF*);
openWindow(Window,x,y,w,h);
r.x:=x;r.y:=y;r.h:=h;r.w:=w;
InstallIcon(Window,r);
END(*IF*);
END OpenIconWindow;
END WinIcon.